using System;
using System.Collections.Generic;
using System.Text;

namespace PerlinNoise
{
    public class Range
    {
        private double start;
        private double end;

        public Range(double _start, double _end)
        {
            this.start = _start;
            this.end = _end;
        }

        public double Start
        {
            get { return this.start; }
            set { this.start = value; }
        }

        public double End
        {
            get { return this.end; }
            set { this.end = value; }
        }
    }

    public struct Range1D
    {
        private Range x;

        public Range1D(Range _x)
        {
            this.x = _x;
        }

        public Range X
        {
            get { return this.x; }
            set { this.x = value; }
        }
    }

    public struct Range2D
    {
        private Range x;
        private Range y;

        public Range2D(Range _x, Range _y)
        {
            this.x = _x;
            this.y = _y;
        }

        public Range X
        {
            get { return this.x; }
            set { this.x = value; }
        }

        public Range Y
        {
            get { return this.y; }
            set { this.y = value; }
        }
    }

    public struct Range3D
    {
        private Range x;
        private Range y;
        private Range z;

        public Range3D(Range _x, Range _y, Range _z)
        {
            this.x = _x;
            this.y = _y;
            this.z = _z;
        }

        public Range X
        {
            get { return this.x; }
            set { this.x = value; }
        }

        public Range Y
        {
            get { return this.y; }
            set { this.y = value; }
        }

        public Range Z
        {
            get { return this.z; }
            set { this.z = value; }
        }
    }

    public struct Range4D
    {
        private Range x;
        private Range y;
        private Range z;
        private Range t;

        public Range4D(Range _x, Range _y, Range _z, Range _t)
        {
            this.x = _x;
            this.y = _y;
            this.z = _z;
            this.t = _t;
        }

        public Range X
        {
            get { return this.x; }
            set { this.x = value; }
        }

        public Range Y
        {
            get { return this.y; }
            set { this.y = value; }
        }

        public Range Z
        {
            get { return this.z; }
            set { this.z = value; }
        }

        public Range T
        {
            get { return this.t; }
            set { this.t = value; }
        }
    }
}
